#!/bin/bash

# AI日志分析引擎统一启动脚本 (Linux/Mac)

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color

# 打印横幅
print_banner() {
    echo "============================================================"
    echo "🚀 AI日志分析引擎 - 统一启动器"
    echo "============================================================"
    echo "💾 数据持久化: 已启用"
    echo "🗂️ 工作区管理: 已启用"
    echo "🤖 AI智能分析: 已启用"
    echo "============================================================"
}

# 检查环境
check_environment() {
    echo -e "${CYAN}🔧 检查环境...${NC}"
    
    # 检查虚拟环境
    if [ ! -d "venv" ]; then
        echo -e "${RED}❌ 虚拟环境不存在，请先运行: python -m venv venv${NC}"
        return 1
    fi
    
    # 检查前端目录
    if [ ! -d "frontend" ]; then
        echo -e "${RED}❌ 前端目录不存在${NC}"
        return 1
    fi
    
    if [ ! -f "frontend/package.json" ]; then
        echo -e "${RED}❌ 前端依赖配置不存在${NC}"
        return 1
    fi
    
    # 检查Node.js和npm
    if ! command -v node &> /dev/null; then
        echo -e "${RED}❌ Node.js 未安装${NC}"
        return 1
    fi
    
    if ! command -v npm &> /dev/null; then
        echo -e "${RED}❌ npm 未安装${NC}"
        return 1
    fi
    
    echo -e "${GREEN}✅ 环境检查通过${NC}"
    return 0
}

# 启动后端
start_backend() {
    echo -e "${CYAN}🔧 启动后端服务...${NC}"
    
    # 激活虚拟环境并启动后端
    source venv/bin/activate
    python run_backend.py &
    BACKEND_PID=$!
    
    echo -e "${YELLOW}⏳ 等待后端服务启动...${NC}"
    sleep 8
    
    # 检查后端是否启动成功
    if kill -0 $BACKEND_PID 2>/dev/null; then
        echo -e "${GREEN}✅ 后端服务启动成功 (PID: $BACKEND_PID)${NC}"
        echo -e "${BLUE}📍 后端地址: http://localhost:8080${NC}"
        return 0
    else
        echo -e "${RED}❌ 后端服务启动失败${NC}"
        return 1
    fi
}

# 启动前端
start_frontend() {
    echo -e "${CYAN}🔧 启动前端服务...${NC}"
    
    # 切换到前端目录并启动
    cd frontend
    npm run dev &
    FRONTEND_PID=$!
    cd ..
    
    echo -e "${YELLOW}⏳ 等待前端服务启动...${NC}"
    sleep 10
    
    # 检查前端是否启动成功
    if kill -0 $FRONTEND_PID 2>/dev/null; then
        echo -e "${GREEN}✅ 前端服务启动成功 (PID: $FRONTEND_PID)${NC}"
        echo -e "${BLUE}📱 前端地址: http://localhost:5173${NC}"
        return 0
    else
        echo -e "${RED}❌ 前端服务启动失败${NC}"
        return 1
    fi
}

# 清理函数
cleanup() {
    echo -e "\n${YELLOW}🛑 正在关闭服务...${NC}"
    
    if [ ! -z "$FRONTEND_PID" ]; then
        echo -e "${CYAN}📱 关闭前端服务...${NC}"
        kill $FRONTEND_PID 2>/dev/null
        wait $FRONTEND_PID 2>/dev/null
        echo -e "${GREEN}✅ 前端服务已关闭${NC}"
    fi
    
    if [ ! -z "$BACKEND_PID" ]; then
        echo -e "${CYAN}🔧 关闭后端服务...${NC}"
        kill $BACKEND_PID 2>/dev/null
        wait $BACKEND_PID 2>/dev/null
        echo -e "${GREEN}✅ 后端服务已关闭${NC}"
    fi
    
    echo -e "${GREEN}👋 所有服务已关闭${NC}"
    exit 0
}

# 设置信号处理
trap cleanup SIGINT SIGTERM

# 主函数
main() {
    print_banner
    
    # 检查环境
    if ! check_environment; then
        exit 1
    fi
    
    # 启动后端
    if ! start_backend; then
        exit 1
    fi
    
    # 启动前端
    if ! start_frontend; then
        cleanup
        exit 1
    fi
    
    # 显示完成信息
    echo ""
    echo "============================================================"
    echo -e "${GREEN}🎉 AI日志分析引擎启动完成！${NC}"
    echo "============================================================"
    echo -e "${BLUE}📍 后端服务: http://localhost:8080${NC}"
    echo -e "${BLUE}📱 前端服务: http://localhost:5173${NC}"
    echo -e "${PURPLE}💾 数据库文件: ai_logging_engine.db${NC}"
    echo "============================================================"
    echo -e "${CYAN}💡 使用说明:${NC}"
    echo "   1. 访问 http://localhost:5173 开始使用"
    echo "   2. 点击'工作区管理'创建或选择工作区"
    echo "   3. 在工作区中创建分析会话"
    echo "   4. 上传日志文件进行分析"
    echo "   5. 使用AI助手进行智能问答"
    echo "============================================================"
    echo -e "${YELLOW}🛑 按 Ctrl+C 停止所有服务${NC}"
    echo "============================================================"
    
    # 尝试打开浏览器
    if command -v xdg-open &> /dev/null; then
        echo -e "${CYAN}🌐 正在打开浏览器...${NC}"
        xdg-open http://localhost:5173 &
    elif command -v open &> /dev/null; then
        echo -e "${CYAN}🌐 正在打开浏览器...${NC}"
        open http://localhost:5173 &
    fi
    
    # 保持运行
    echo -e "${GREEN}✅ 系统正在运行中...${NC}"
    while true; do
        sleep 1
        
        # 检查进程是否还在运行
        if ! kill -0 $BACKEND_PID 2>/dev/null; then
            echo -e "${RED}❌ 后端服务意外停止${NC}"
            cleanup
        fi
        
        if ! kill -0 $FRONTEND_PID 2>/dev/null; then
            echo -e "${RED}❌ 前端服务意外停止${NC}"
            cleanup
        fi
    done
}

# 运行主函数
main
